package com.baiduspring.utils.servlet;

import javax.servlet.http.HttpServletRequest;

/**
 * <div style="color:green;font-weight: bolder;">
 * <h3>WEB开发常用工具集</h3>
 * &emsp;&emsp;描述：本类中实现了，在web应用开发中常用的工具，使用的时候需要相应的加入需要的jar文件。
 * </div>
 *
 * @author xiongyan
 * @email javadevyan@163.com
 * @date 2016年2月26日 上午9:11:48
 * @history <add>
 * @functionName
 * @date 2016年2月26日 上午9:11:48
 * @remark </add>
 * <upd>
 * @functionName
 * @date 2016年2月26日 上午9:11:48
 * @remark </upd>
 */
public class WebUtils {
    /**
     * <div style="color:green;font-weight: bolder;">
     * <h3></h3>
     * &emsp;&emsp;描述：判断http/https请求的来源是PC/APP。true：APP，false：PC
     * </div>
     *
     * @param
     * @return
     * @throws
     * @author xiongyan
     * @email javadevyan@163.com
     * @date 2016年2月26日上午9:12:34
     */
    public static boolean requestSource(HttpServletRequest request) {
        String User_Agent = request.getHeader("User-Agent");
        return User_Agent.toLowerCase().contains("mobile") || User_Agent.toLowerCase().contains("wpdesktop");
    }

    /**
     * <div style="color:green;font-weight: bolder;">
     * <h3></h3>
     * &emsp;&emsp;描述：获取远程终端的真实IP。
     * </div>
     *
     * @param
     * @return
     * @throws
     * @author xiongyan
     * @email javadevyan@163.com
     * @date 2016年2月26日上午9:20:07
     */
    public static String getTerminalRealIP(HttpServletRequest request) {
        String _ip = request.getHeader("x-forwarded-for");
        if (_ip == null || _ip.length() == 0 || "unknown".equalsIgnoreCase(_ip)) {
            _ip = request.getHeader("Proxy-ClientSingle-IP");
        }
        if (_ip == null || _ip.length() == 0 || "unknown".equalsIgnoreCase(_ip)) {
            _ip = request.getHeader("WL-Proxy-ClientSingle-IP");
        }
        if (_ip == null || _ip.length() == 0 || "unknown".equalsIgnoreCase(_ip)) {
            _ip = request.getRemoteAddr();
        }
        return _ip;
    }

    public static String getRoot(HttpServletRequest request) {
        return request.getServletContext().getRealPath("/");
    }

    public static String basePath(HttpServletRequest request) {
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
        return basePath;
    }
}
